记录一些随便写的 python 的东西。

打包依赖

pip list --format=freeze > requirements.txt

小说 .txt 文件分段

最近在看小说,在网络上下载了.txt文件到kindle上看,结果发现文字段落间没有空白行╮(╯_╰)╭,于是乎,只能自己动手了。

def process():
    with open("novel.txt", "rt", encoding="utf8") as f:
        lines = f.readlines()
        # 由于原文中存在 \n 独自成一行,strip()过滤后仍会留下空的元素
        new_lines = [line.strip() + "\n\n" for line in lines]
        # 每两行文字间空一行
        # new_lines = [line + "\n" for line in filter(lambda x: x.strip(), lines)]
    with open("output.txt", "wt", encoding="utf8") as f:
        f.writelines(new_lines)
process()

漫画 图片纵向拼接

最近在看漫画,网页端和手机端看着都不舒服,于是把漫画的.jpg文件爬取下来,再纵向拼接成一张图来看。

TO BE WRITTEN...

Kindle .epub 文件分段

最近又在看小说,这次是 .epub 文件,段与段之间还是没有空白行,看着很难受 (\╯﹏╰)—\,于是写个脚本处理一下。

.epub 文件结构

.epub 文件当压缩包打开,可以看到,文件目录如下:

—— META-INF
—— OEBPS
   —— Images
   —— Styles
   —— Test <-- 里面是想要修改的.html文件

.epub 文件中文字内容是以 .html 的形式存在的(其实就是把一群 .html 页面打包了)

实现代码
import os
import zipfile
import bs4


def zip_epub():

    # 设置EPUB文件名和文件路径
    epub_file = "src/New The Little Prince.epub"
    epub_folder = "src/New The Little Prince"

    # 创建一个新的EPUB文件
    with zipfile.ZipFile(epub_file, "w") as new_epub:

        # 遍历EPUB文件夹中的所有文件和文件夹,并添加到新的EPUB文件中
        for folder_name, sub_folders, file_names in os.walk(epub_folder):

            # 遍历文件夹中的所有文件,并添加到新的EPUB文件中
            for file_name in file_names:
                # 获取文件的完整路径
                file_path = os.path.join(folder_name, file_name)

                # 将HTML文件放置在OEBPS/Text/文件夹下
                if file_name.endswith(".html"):
                    file_path_in_epub = os.path.join("OEBPS", "Text", file_name.replace(" ", "_").lower())
                else:
                    file_path_in_epub = os.path.relpath(file_path, epub_folder)

                # 将文件添加到新的EPUB文件中
                new_epub.write(file_path, file_path_in_epub)

    print("EPUB文件已经生成完成!")


def process():

    # 打开epub文件
    with zipfile.ZipFile('./src/The Little Prince.epub', 'r') as myzip:

        # 获取文件列表
        files = myzip.namelist()

        # 遍历文件列表并提取html文件
        for file in files:
            if file.endswith(".html"):

                # 读取HTML文件内容
                html_content = myzip.read(file)

                # 解析HTML文件
                soup = bs4.BeautifulSoup(html_content, 'html.parser')

                # 获取所有的<p>标签
                p_tags = soup.find_all('p')

                # 在每两个<p>标签之间增加一个空白行
                for i in range(1, len(p_tags)):
                    p_tags[i - 1].insert_after(soup.new_tag('br'))

                # 将修改后的HTML保存到新文件中
                with open(f'src/New The Little Prince/{file}', 'w', encoding="utf-8") as new_html_file:
                    new_html_file.write(soup.prettify())


process()
zip_epub()